#include <mysql.h>
#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include "adatbazis.h"
#include "tag.h"

using namespace std;

class Menu:public Adatbazis{
  public:
     void Run();
	void Menu1Write();
	void Menu2Write();
  private:
	void Listaz();
	void KeresSzerzo();
	void KeresCim();
	void Keres();
	void KolcsonzesListaz();
	void Kolcsonzes();
	void ListazKonyvek();
	void TagListaz();
	void Tagmodosit(); 
	void Tagfelvetel();
	void TagTorles();
	void KonyvModosit();
	void KonyvTorles();
	void KonyvVisszahozastRogzit();
	void KonyvFelvetel(); 
	void KesedelemListaz();
	Tag* tag;
	Konyvtaros* konyvtaros;
};

int main()
{
    Menu m;
    m.Run();
    return 0;
}

void Menu::Run()
{
     int c = 0;
     Adatbazis d((char*)"localhost",(char*)"root",(char*)"",(char*)"konyvtar");
     string felh_nev="eszter";
	string jelszo="eszter123";
	cout<<"Addja meg a felhasználói nevét és jelszavát:"<<endl;
	cin>>felh_nev>>jelszo;
	string query = "SELECT * FROM felhasznalok WHERE nev='"+felh_nev+"' and okiratszam='" + jelszo +"'";
	result = d.Lekerdezes(query.c_str());
	if(mysql_num_rows(result)==0){
		cout<<"Hibas bejelentkezesi adatok!"<<endl;
		exit(1);
	}
	else {
		cout<<"Sikeres bejelentkezes: "<<felh_nev;
		row = mysql_fetch_row(result);
		string tip =row[5];
		if(tip=="0"){
			cout<<" - Konyvtaros!"<<endl;
			konyvtaros = new Konyvtaros(row[0],row[1],row[2],row[3],row[4]);
			
			do{
				Menu1Write();
				cin >> c;
				switch(c){
				case 1: ListazKonyvek(); break;
				case 2: TagListaz(); break;
				case 3: Tagmodosit(); break;
				case 4: Tagfelvetel(); break;
				case 5: TagTorles(); break;
				case 6: KonyvModosit(); break;
				case 7: KonyvTorles(); break;
				case 8: KonyvFelvetel(); break;
				case 9: KesedelemListaz(); break;			
        			}
   			}while(c!=0);
   			exit(1);
		}
		else if(tip=="1"){cout<<" - Egyetemi hallgato!"<<endl;tag = new EgyetemiHallgato(row[0],row[1],row[2],row[3],row[4]);}
		else if(tip=="2"){cout<<" - Egyetemi oktato!"<<endl;tag = new EgyetemiOktato(row[0],row[1],row[2],row[3],row[4]); }
		else if(tip=="3"){cout<<"- Mas egyetem polgara!"<<endl; tag = new MasEgyetemPolgara (row[0],row[1],row[2],row[3],row[4]);}
		else if(tip=="4"){cout<<" - Egyeb tag!"<<endl;tag = new EgyebTag(row[0],row[1],row[2],row[3],row[4]);}
		do{
			Menu2Write();
			cin >> c;
			switch(c){
				case 1: Listaz(); break;
				case 2: KeresSzerzo();break;
				case 3: KeresCim();break;
				case 4: Keres();break;
				case 5: KolcsonzesListaz();break;
				case 6: Kolcsonzes();break;
				case 7: KonyvVisszahozastRogzit(); break;
			}
		}while(c!=0);	
	}	
    
}

//Könyvtáros
void Menu::Menu1Write()
{
     cout << endl << endl;
     cout << " 1. -Konyvek listazasa" << endl;
     cout << " 2. -Tagok listazasa" << endl;
     cout << " 3. -Tag modositasa" << endl;
     cout << " 4. -Tagfelvetel" << endl;
     cout << " 5. -Tag torlese" << endl;
     cout << " 6. -Konyv modositasa" << endl;
     cout << " 7. -Konyv torlese" << endl;
     cout << " 8. -Konyvfelvetel" << endl;
     cout << " 9. -Kesedelemmel rendelkezo tagok" << endl;
     cout << " 0. -Kilepes" << endl;
     
}
//Egyéb tag
void Menu::Menu2Write()
{
     cout << endl << endl;
	cout << " 1. -Könyvek listazasa" << endl;
	cout << " 2. -Kereses szerzo alapjan" << endl;
	cout << " 3. -Kereses cim alapjan" << endl;
	cout << " 4. -Kereses" << endl;
	cout << " 5. -Kolcsonzesek listazasa" << endl;
	cout << " 6. -Kolcsonzes" << endl; 	
     cout << " 7. -Konyvet visszahoz" << endl;  
     cout << " 0. -Kilepes" << endl;
}

void Menu::Listaz(){
	tag->ListazKonyvek();
}

void Menu::KeresSzerzo(){
	std::string szerzo;
	cout<<"Addja meg a szerzo nevet: ";
	cin>>szerzo;
	tag->KeresSzerzo(szerzo);
}

void Menu::KeresCim(){
	std::string cim;
	cout<<"Addja meg a konyv cimet: ";
	cin>>cim;
	tag->KeresCim(cim);
}

void Menu::Keres(){
	std::string kulcs;
	cout<<"Addja meg keresett tulajdonsagot: ";
	cin>>kulcs;
	tag->Keres(kulcs);
}

void Menu::KolcsonzesListaz(){ tag->KolcsonzesListazas(); }

void Menu::Kolcsonzes(){	tag->Kolcsonzes();}

void Menu::KonyvVisszahozastRogzit(){ tag->KonyvVisszahozastRogzit(); }

//a könyvtáros tagfüggvényei
void Menu::ListazKonyvek(){ konyvtaros->ListazKonyvek(); }

void Menu::TagListaz(){ konyvtaros->TagListaz(); }

void Menu::Tagfelvetel(){ konyvtaros->Tagfelvetel();}

void Menu::TagTorles(){ konyvtaros->TagTorles();}

void Menu::KonyvTorles(){ konyvtaros->KonyvTorlese(); }

void Menu::KonyvModosit(){ konyvtaros->KonyvModosit(); }

void Menu::Tagmodosit(){	konyvtaros->Tagmodosit(); } 

void Menu::KonyvFelvetel(){ konyvtaros->KonyvFelvetel(); }

void Menu::KesedelemListaz(){konyvtaros->KesedelemListaz();}
